﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Mvp.DTO
{
    /*
     * ILookupCollection同ILookupList的区别:
     *   ILookupList:更多的描述了一个事物,即页面上的DropDownList,它定义的方法也是对其本身进行操作的
     *   ILookupCollection: 描述的是一个行为,它仅包含一个方法BindTo(),方法接收的参数正是ILookupList,
     *      意为将ILookupCollection的数据绑定到ILookupList,而ILookupCollection包含的数据,
     *      是ILoopupDTO的集合(IList<ILookupDTO>,由类型外部通过构造函数传入)
     */

    public interface ILookupCollection
    {
        void BindTo(ILookupList list);
    }

    public class SimpleLookupCollection : ILookupCollection
    {
        private IList<ILoopupDTO> _items;

        public SimpleLookupCollection(IEnumerable<ILoopupDTO> itmes)
        {
            _items = new List<ILoopupDTO>(itmes);
        }

        /// <summary>
        /// 获取项目数
        /// </summary>
        public int Count { get { return _items.Count; } }

        #region ILookupCollection 成员

        /// <summary>
        /// 将项目绑定到列表
        /// </summary>
        /// <param name="list"></param>
        public void BindTo(ILookupList list)
        {
            list.Clear();
            foreach (var item in _items)
            {
                list.Add(item);
            }
        }

        #endregion
    }
}
